The invention relates to integrated circuit design and more specifically to methods and systems for optimizing delay insertions for reducing timing violations in integrated circuit design.
Designers use software tools to perform timing analysis on integrated circuit designs. The software tools can determine if a signal arrives too early or too late at the end of a timing path. The end of the timing path usually consists of either an I/O pin or an input pin of a sequential logic (e.g., a register or latch). When the end of the timing path consists of an input pin of a sequential logic, the early signal causes a setup time violation while the late signal causes a hold time violation. A setup time violation occurs when the signal fails to be present and unchanged at the input pin of the sequential logic for a specified time before the sequential logic is clocked. A hold time violation occurs when the signal fails to remain unchanged at the input terminal of the sequential logic for a specified time after the sequential logic element is clocked. Both setup and hold times must be satisfied for the sequential logic to propagate the appropriate output signal. When the end of the timing path is an I/O pin, the early and late signals fail to meet I/O timing constraints (e.g., board-level constraints between integrated circuit chips).
FIG. 6 shows that the signal to the end of the timing path must arrive within a timing window in each clock cycle (i.e., the signal to the input pin of the sequential logic or the I/O pin must transition within a window in each clock cycle) to avoid timing violations. This timing window is defined by a minimum required time (mRT) after the start of a clock cycle and a maximum required time (MRT) before the end of the same clock cycle. The minimum and the maximum required times are respectively determined from the hold and setup times of a sequential logic or I/O timing constraints imposed by external logic.
When the signal arrives too late at the end of the timing path, the timing violation is referred to as a xe2x80x9cmax path violationxe2x80x9d because the maximum required time of the timing path has been violated. To fix the max path violation, the signal needs to be sped up to avoid a timing violation. Typically a conventional method fixes the max path violation by moving or resizing the logic elements in a timing path, deleting buffers, restructuring the logic, or re-synthesizing the integrated circuit design.
When the signal arrives too early at the end of the timing path, the timing violation is referred to as a xe2x80x9cmin path violationxe2x80x9d because the minimum required time of the timing path has been violated. To fix the min path violation, the signal needs to be delayed to avoid a timing violation. Typically a conventional method fixes the min path violation by placing a buffer in between two elements in the timing path hereafter called xe2x80x9cdriverxe2x80x9d and xe2x80x9creceiverxe2x80x9d.
The conventional method places the buffer within a bounding box that encloses the driver and receiver. The conventional method attempts to select a buffer with an intrinsic delay (i.e., a delay generated by the buffer without an effective capacitive load at its output pin) equal to a required minimum delay D (FIG. 6) for the signal to arrive after the start of the timing window. When the intrinsic delays of the available buffers do not match the required minimum delay D, the conventional method selects the next largest buffer with an intrinsic delay greater than the required minimum delay D. The use of a larger buffer increases the cost of the integrated circuit because the larger buffer increases the size of the integrated circuit. Thus, what are needed are methods and systems that optimize delay insertions between drivers and receivers using available buffers to generate the required minimum delay D.
A method is provided to optimize delay insertions for reducing a timing violation in a timing path. The method includes inserting a buffer in the timing path between a driver and a receiver and placing the buffer either inside or outside a bounding box that encloses the driver and the receiver. The placement of the buffer inside or outside the bounding box creates the appropriate effective loading on the buffer to generates a minimum delay required to avoid the timing violation.